Image data for printing is typically provided as a series of horizontal lines of data, or rasters. Such a format makes the image compatible with displaying on a CRT, for example, where an electron beam forms the image line by line. Raster format is also compatible with printing systems that print line by line, such as laser printers, or printers using printheads that span the entire width of the media to be printed on.
In a carriage printer there are typically one or more printheads that contain arrays of marking elements. Printheads in a carriage printer do not span the entire width of the media. Instead, the printhead is moved in a carriage scan direction while the marking elements are controlled to print a swath of image data. Then the media is advanced in a media advance direction, which is substantially perpendicular to the carriage advance direction, and another swath of image data is printed. Thus the image is printed swath by swath in a carriage printer.
Staggered arrays are well-known for inkjet printheads, with an ink feed channel being located between the two columns of marking elements. Numbered sequentially, the odd-numbered marking elements are located in one column of the array and the even numbered marking elements are located in the other column of the array. Image data is provided in raster format, i.e. line by line of 1's and 0's (where 1 means print and 0 means do not print in particular pixel locations on the media). However, the data that is needed at any given instant in time is whether or not each individual marking element in the array should make a mark on the media when the elements are located near the corresponding pixel locations on the media at that instant in time.
Since the image in a carriage printer is printed swath by swath, rather than raster line by raster line, the image data needs to be reformatted. Because the data needs to be provided as columns rather than as sequential raster lines and because of the offset distance between columns within a staggered array, at any given instant in time, the marking data for the odd numbered marking elements is from a first column of image data, and the marking data needed for the even numbered marking elements is from a second column of image data that is offset from the first column of image data by a number of pixels corresponding to the offset distance between columns of marking elements.
In addition, depending on the marking technology, it may not be possible to have all marking elements making marks at the same time. For example, in a thermal ink jet carriage printer, a typical array of marking elements may include several hundred drop ejectors for a single color. Not only would this require excessive simultaneous electrical current draw, but also fluidic crosstalk effects on drop ejectors near the jets being fired make it desirable to provide a firing order that fires groups of jets at a time, where sequentially fired jets or groups of jets are not adjacent to one another. At any given instant in time, it is necessary to provide the printhead with the data for firing the members of the group being fired next, so not only does the image data need to be provided in columns (or offset columns as described above) rather than in raster lines, but also the data within the columns needs to be shuffled in order to accommodate the firing order.
Printers for printing color images typically have marking element arrays for printing four (cyan, magenta, yellow and black) or more different colors. Image data for color printers is organized as color planes in memory. However, the marking element arrays for different colors are offset from one another, typically along the carriage scan direction. In other words a marking element in a nozzle array for one color will arrive at a position for printing a pixel in a given location at a different time than the corresponding marking element in a nozzle array for a different color would arrive at the position. Thus the data for the different color planes must also be appropriately timed such that offset between marking element arrays for different colors is properly accommodated.
In summary:
                the data for each color plane must be rotated from horizontal raster lines to vertical column segments in memory;        data must be shuffled in memory to compensate for the firing order of the marking elements; and        offsets between columns of marking elements (for the same color or different colors) must be compensated for.        
In prior art carriage printers, the reformatting of the incoming raster data is performed in multiple successive steps to reformat the data into vertical image column segments with the proper offsets and firing order, the image data being padded with zeroes in memory to compensate for the spatial offsets between columns of marking elements. This requires both processing power and memory to perform the reorganization of the image data.
What is needed therefore to improve the time efficiency and memory efficiency, particularly for high speed, high resolution, and low cost carriage printers is a method and apparatus for converting raster image data to swath image data for a carriage printer without requiring preprocessing of the image data.